from flask_sqlalchemy import SQLAlchemy
import sqlalchemy
from sqlalchemy import create_engine, text
import pandas as pd

db = SQLAlchemy()

# 初始化数据库连接的方法
def init_app(app):
    db.init_app(app)
    with app.app_context():
        db.create_all()


# 运行自定义sql的语句（应对一些比较简单或者太长的sql语句，api不好实现，只能支持查询）
def runSql(sql):
    connect_info = "mysql+pymysql://root:123456@127.0.0.1:3306/botany-web"
    # 使用 pool_pre_ping 参数确保 Engine 对象
    engine = create_engine(connect_info, pool_pre_ping=True)
    with engine.connect() as connection:
        # 使用 text 函数创建可执行的 SQL 表达式
        sql_expr = text(sql)
        # 使用 pandas 读取 SQL 结果
        df = pd.read_sql(sql_expr, connection)
        # 将 DataFrame 转为 JSON
        result_json = df.to_json(orient='records', date_format='iso', default_handler=str)
    # 打印 DataFrame

    return result_json
